<?php

/*
* Modelo: "aplicacion_rol.php"
*
* Realizado por:
* 	Carlos Calvo
*	Elisa Conesa
*/

@include_once('enlaceBD.php');

class AplicacionRol {
	
    /* Nombre de las Variables del Modelo (INFORMATIVO)
    +-----------------+-------------+------+-----+---------+-------+
	| Field           | Type        | Null | Key | Default | Extra |
	+-----------------+-------------+------+-----+---------+-------+
	| id_rol          | int(11)     | NO   | PRI | NULL    |       |
	| id_aplicacion   | int(11)     | NO   | PRI | NULL    |       |
	| nombre          | varchar(50) | NO   |     | NULL    |       |
	| descripcion     | varchar(50) | NO   |     | NULL    |       |
	| id_permisologia | text        | NO   |     | NULL    |       |
	| bd              | varchar(50) | NO   |     | NULL    |       |
	+-----------------+-------------+------+-----+---------+-------+
	*/
	
	// Variable para los resultados de las Consultas
	private $respuesta;
	
	// Tablas del Modelo
	private $taplicacion_rol 		= "aplicacion_rol";
	
	
    // =================================================================================================================
    //	FUNCION - CONSULTAR LOS ROLES DE LOS USUARIOS DADA UNA APLICACION
    // =================================================================================================================
    
    public function consultar() {
        $conexion 	= new EnlaceBD;
        $var 		= $conexion->conectar( $_SESSION['db_portal'] );
		
		$sql = "select id_rol as id_rol, 
					id_aplicacion as id_aplicacion, 
					nombre as nombre, 
					descripcion as descripcion, 
					id_permisologia as id_permisologia, 
					bd as bd 
				from ".$_SESSION['db_portal'].$_SESSION['schema_db'].".$this->taplicacion_rol 
				where id_aplicacion = ".$_SESSION['id_aplicacion']." and 
					id_estatus = 'A' 
				order by id_rol";
        
        $this->respuesta = $conexion->consultar($sql) 
			or die("No se pudo consultar los Roles de los Usuarios.");
		
        $i = 0;
        while ( $temparray = $this->respuesta->buscar_fila() ) {
            $lista_aplicacion_rol[$i][0] = $temparray['id_rol'];
            $lista_aplicacion_rol[$i][1] = $temparray['id_aplicacion'];
			$lista_aplicacion_rol[$i][2] = strtoupper($temparray['nombre']);
            $lista_aplicacion_rol[$i][3] = strtoupper($temparray['descripcion']);
            $lista_aplicacion_rol[$i][4] = $temparray['id_permisologia'];
			$lista_aplicacion_rol[$i][5] = $temparray['bd'];
            $i++;
        }
        
        $conexion->desconectar();
        return $lista_aplicacion_rol;
    }
	
	
	// =================================================================================================================
    //	FUNCION - CONSULTAR EL NOMBRE DEL ROL DADO UN ROL DE UNA APLICACION
    // =================================================================================================================
    
    public function consultar_nombre_rol( $id_rol ) {
        $conexion 	= new EnlaceBD;
        $var 		= $conexion->conectar( $_SESSION['db_portal'] );
		
		//$id_rol 	= filter_var($id_rol, FILTER_SANITIZE_NUMBER_INT);
		
		$sql = "select nombre as nombre 
				from ".$_SESSION['db_portal'].$_SESSION['schema_db'].".$this->taplicacion_rol 
				where id_rol = $id_rol and 
					id_aplicacion = ".$_SESSION['id_aplicacion'];
		
		$this->respuesta = $conexion->consultar($sql) 
			or die("No se pudo consultar el Nombre del Rol del Usuario.");
		
		$temparray = $this->respuesta->buscar_fila();
        
        $conexion->desconectar();
        return strtoupper($temparray['nombre']);
    }
	
	
	// =======================================================================================================
    //	FUNCION - CONSULTAR LAS BASE DE DATOS DADO UN ROL DE UNA APLICACION
    // =======================================================================================================
    
    public function consultar_bd_rol( $id_rol ) {
        $conexion 	= new EnlaceBD;
        $var 		= $conexion->conectar( $_SESSION['db_portal'] );
		
		//$id_rol 	= filter_var($id_rol, FILTER_SANITIZE_NUMBER_INT);
		
		$sql = "select bd as bd 
				from ".$_SESSION['db_portal'].$_SESSION['schema_db'].".$this->taplicacion_rol 
				where id_rol = $id_rol and 
					id_aplicacion = ".$_SESSION['id_aplicacion'];
		
		$this->respuesta = $conexion->consultar($sql) 
			or die("No se pudo consultar las Base de Datos del Rol del Usuario.");
		
		$temparray = $this->respuesta->buscar_fila();
		
        $conexion->desconectar();
        return $temparray['bd'];
    }
	
	
	// =======================================================================================================
    //	FUNCION - CONSULTAR EL ULTIMO ID DE ROL DE UNA APLICACION
    // =======================================================================================================
    
    public function consultar_ultimo_id_rol() {
        $conexion 	= new EnlaceBD;
        $var 		= $conexion->conectar( $_SESSION['db_portal'] );
		
		//$id_rol 	= filter_var($id_rol, FILTER_SANITIZE_NUMBER_INT);
		
		$sql = "select max(id_rol) as id_rol 
				from ".$_SESSION['db_portal'].$_SESSION['schema_db'].".$this->taplicacion_rol 
				where id_aplicacion = ".$_SESSION['id_aplicacion'];
		
		$this->respuesta = $conexion->consultar($sql) 
			or die("No se pudo consultar el Ultimo ID de Rol de una Aplicacion.");
		
		$temparray = $this->respuesta->buscar_fila();
		
        $conexion->desconectar();
        return $temparray['id_rol']+1;
    }
	
	
	// =======================================================================================================
    //	FUNCION - CONSULTAR LOS IDs DE LA PERMISOLOGIA DE SUPER USUARIO DE UNA APLICACION
    // =======================================================================================================
    
    public function consultar_super_usuario() {
        $conexion 	= new EnlaceBD;
        $var 		= $conexion->conectar( $_SESSION['db_portal'] );
		
		//$id_rol 	= filter_var($id_rol, FILTER_SANITIZE_NUMBER_INT);
		
		$sql = "select id_permisologia as id_permisologia 
				from ".$_SESSION['db_portal'].$_SESSION['schema_db'].".$this->taplicacion_rol 
				where id_rol = 1 and 
					id_aplicacion = ".$_SESSION['id_aplicacion'];
		
		$this->respuesta = $conexion->consultar($sql) 
			or die("No se pudo consultar la Permisologia del Rol Super Usuario.");
		
		$temparray = $this->respuesta->buscar_fila();
		
        $conexion->desconectar();
        return $temparray['id_permisologia'];
    }
	
	
	// ==================================================================================================
	//	FUNCION - CONSULTAR LA PERMISOLOGIA DE UN SUPER USUARIO
	// ==================================================================================================
	
	public function consultar_permisologia_super() {
		
		$id_permisologia_super 				= $this->consultar_super_usuario();
		$_SESSION['id_permisologia_super'] 	= $id_permisologia_super;
		
		// Parseamos $ids_rol para obtener la Permisologia del Usuario
		$ids_permisologia_super = split( ",", $id_permisologia_super );
		
		// Consultamos el Numero de Funcionalidades
		$eventos 		= new Eventos;
		$numero_eventos = $eventos->consultar_numero_eventos() - 3; 	// Descontando: Iniciar Sesion, Ayuda, Cerrar Sesion
		
		// Colocamos en Lista Permisologia aquellas funcionalidades que estan seteadas
		$lista_permisologia_super	= array();
		
		$i = 1;
		while ( $i <= count($ids_permisologia_super) ) {
			$j = $i - 1;
			$lista_permisologia_super[trim($ids_permisologia_super[$j])] = "1"; // Seteamos la Permisologia que POSEE el Usuario
			$i++;
		}
		
		$i = 1;
		while ( $i <= $numero_eventos ) {
			if ( $lista_permisologia_super[$i] != "1" ) {
				$lista_permisologia_super[$i] = "0";							// Seteamos la Permisologia que NO POSEE el Usuario
			}
			$i++;
		}
		
		ksort($lista_permisologia_super);										// Ordenamos el Arreglo por Clave, es decir, por ID del Evento
		
		return $lista_permisologia_super;
	}
}
?>